Análise Exploratória - MARVEL VS DC
PARTE A
Motivação do Projeto
O projeto possui como objetivo comparar os personagens listados, bem como suas editoras (Marvel Comics e Dc Comics). Dessa forma, a curiosidade de colocar lado a lado os universos ficticios totalmente diferentes e ao mesmo tempo, com uma certa rivalidade, orientou a tomada de decisão. Assim, no final do trabalho, será realizada uma batalha mortal entre os personagens de cada universo com fundamentação em dados que irão definir um vencedor nessa guerra!
Hipótese
A peça gráfica visa sanar a seguinte questão: “Diante do universo das HQ’s, em uma batalha mortal entre DC Comics e Marvel Comics, quem sai vitorioso?”
Banco de dados
O site https://www.superherodb.com/ é um banco de dados online que contém informações detalhadas sobre super-heróis e supervilões de várias editoras de histórias em quadrinhos, como Marvel Comics, DC Comics, Dark Horse Comics, entre outras.
O Superhero Database (SuperheroDB) é uma fonte abrangente de informações sobre personagens fictícios, incluindo seus nomes, biografias, habilidades, poderes, estatísticas, histórico de publicação e muito mais. O site permite que os fãs de super-heróis pesquisem e explorem uma ampla gama de personagens, além de fornecer comparações de poderes, estatísticas e rankings dos personagens mais populares.
Dessa forma, utilizaremos ele como parâmetro para obtenção dos dados necessários do nosso trabalho. Especificamente, trabalharemos com a editora Marvel Comics e DC Comics.
Os aquivos csv’s do projeto podem ser encontrados em:
Link dos DataSets: https://github.com/KaikyBraga/DC-Comics-vs-Marvel
Bibliotecas necessárias
Para realização do projeto, utilizaremos as seguintes bibliotecas:
library(ggplot2)
library(plyr)
library(dplyr)
library(gridExtra)
library(rmarkdown)
library(utf8)
Sys.setlocale("LC_ALL", "pt_br.utf-8") ## [1] "LC_COLLATE=pt_br.utf-8;LC_CTYPE=pt_br.utf-8;LC_MONETARY=pt_br.utf-8;LC_NUMERIC=C;LC_TIME=pt_br.utf-8"
Obtenção de csv’s
Os dados são uma composição de três DataSets, são eles: informações
sobre os personagens, super poderes de cada indivíduo e pontuação de
cada atributo dos personagens (Força, Velocidade, Inteligência,
Durabilidade, Poder e Combate). Em especial, na primeira linha de
código, o argumento
na.strings = c("-", "-99") indica que os
valores "-" e
"-99" nos dados devem ser tratados como NA
(dados faltantes), bem como fizemos na última linha de código.
info_personagens <- read.csv("datasets/heroesInformation.csv", na.strings = c("-", "-99"))
info_poderes <- read.csv("datasets/superHeroPowers.csv")
info_atributos <- read.csv("datasets/charactersStats.csv", na.strings = "")Renomeando e criando Segmentação
- Renomeamos a coluna
namedeinfo_personagensparaName:colnames(info_personagens)[colnames(info_personagens) == "name"] <- "Name" - Fizemos uma segmentação dos dados de
info_personagens, em que selecionamos apenas as editorasMarvel ComicseDC Comics:marvelDcInfo <- info_personagens[(info_personagens$Publisher == "MarvelComics" | info_personagens$Publisher == "DC Comics"), ]
colnames(info_personagens)[colnames(info_personagens) == "name"] <- "Name"
marvelDcInfo <- info_personagens[(info_personagens$Publisher == "Marvel Comics" | info_personagens$Publisher == "DC Comics"), ]Filtração de dados
- Nesse trecho, selecionamos apenas as linhas que não possuem nomes
repetidos:
marvelDcInfo <- marvelDcInfo[!duplicated(marvelDcInfo$Nome), ] - Em seguida, selecionamos apenas algumas variáveis que iremos
trabalhar:
marvelDcInfo <- marvelDcInfo %>% select(Nome, Gender, Race, Publisher,Alignment)
marvelDcInfo <- marvelDcInfo[!duplicated(marvelDcInfo$Name), ]
marvelDcInfo <- marvelDcInfo %>%
select(Name, Gender, Race, Publisher)Junção dos Data Frames
- Nessa parte unimos os DataSets
marvelDcInfoeinfo_atributosde acordo com a coluna em comumName, o argumentotype = "inner"indica que apenas as linhas comuns a ambos os data frames serão incluídas no resultado:marvelDcStatsInfo <- join(marvelDcInfo, info_atributos, by = "Name",type = "inner") - Nessa parte fazemos a junção total dos Data Frames trabalhados:
fullMarvelDc <- join(marvelDcStatsInfo, info_poderes, by = "Name",type = "inner")
marvelDcStatsInfo <- join(marvelDcInfo, info_atributos, by = "Name", type = "inner")
colnames(info_poderes)[colnames(info_poderes) == "hero_names"] <- "Name"
fullMarvelDc <- join(marvelDcStatsInfo, info_poderes, by = "Name", type = "inner")Versão Final do Data Frame
Em resumo, esses comandos estão realizando transformações no data frame fullMarvelDc, incluindo a conversão para um formato longo, renomeação de colunas e filtragem de linhas com base em um valor específico. O resultado final é o data frame marvelDc, que contém as colunas relevantes e apenas as linhas onde o valor é “True” na coluna “value”.
marvelDc <- melt(fullMarvelDc, id = c("Name", "Gender", "Race", "Publisher", "Alignment", "Intelligence",
"Strength", "Speed", "Durability", "Power", "Combat", "Total"))
colnames(marvelDc)[colnames(marvelDc) == "variable"] <- "SuperPower"
marvelDc <- marvelDc %>%
filter(value == "True") %>%
select(-value)PARTE B
Análise Exploratória
Podemos exibir o Data Frame que iremos trabalhar da seguinte forma:
paged_table(marvelDc)Gender X Publisher
Podemos verificar o percentual de gênero dos personagens por cada
editora. Nessa parte, esses comandos estão calculando a contagem,
frequência relativa e porcentagem para cada combinação de “Publisher” e
“Gender” no data frame marvelDc. Em seguida, eles
calculam a soma das porcentagens para cada grupo de “Publisher”. O
resultado final é um data frame chamado
gender_publisher com as informações
agregadas.
gender_publisher <- marvelDc %>%
group_by(Publisher, Gender) %>%
summarize(N = n()) %>%
mutate(freq = N / sum(N),
pct = round((freq*100), 0))
gender_publisher %>% group_by(Publisher) %>% summarize(total = sum(pct))## # A tibble: 2 × 2
## Publisher total
## <chr> <dbl>
## 1 DC Comics 100
## 2 Marvel Comics 100
ggplot(gender_publisher, aes(x = Gender, y = pct, fill = Gender)) + # Dado de gender_publisher, definindo o eixo x = gênero, y = porcentagem e cor do preenchimento de acordo com o gênero.
geom_col(color = "black") + # Adiciona as barras ao gráfico com bordas pretas.
labs(x = "Gênero", y = NULL, title = "Concentração de gêneros por editora") + # Modifica o rótulo do eixo x, retira o rótulo do eixo y e adiciona um título.
guides(fill = FALSE) + # Remove a legenda da cor de preenchimento, pois ela é desnecessária neste caso.
facet_grid(~ Publisher) + # Faz a divisão em dois gráficos de acordo com a editora.
theme_bw() + # Define o tema do gráfico como um fundo branco.
theme(plot.title = element_text(hjust = 0.5, size = 15, face = "bold"), #Define diferentes elementos visuais do gráfico, como o título centralizado, o tamanho e estilo da fonte dos títulos dos eixos, tamanho da fonte do texto do eixo, tamanho do texto das faixas e assim por diante.
axis.title = element_text(size = 12, face = "bold"),
axis.text = element_text(size = 11),
strip.text = element_text(size = 13)) +
scale_fill_manual(values = c("#FF81D0", "#009ADA")) + # Define uma paleta de cores manualmente.
scale_x_discrete(labels = c("Feminino", "Masculino", "Indefinido")) + # Modifica os nomes dos rótulos do eixo x.
scale_y_continuous(labels = function(x) paste0(format(x, scientific = FALSE), "%")) + # Altera os rótulos do eixo y para mostrar as porcentagens com o símbolo de porcentagem (%).
geom_text(aes(label = paste0(pct, "%")), vjust = -0.3, size = 3.5) # Adiciona rótulos de texto acima das barras, exibindo as porcentagens correspondentes.paleta_cores <- c("#FF81D0", "#009ADA") # Cria um vetor com duas cores que serão usadas posteriormente
ggplot(data = marvelDc, mapping = aes(x = Publisher, fill = Gender)) + # Dado de marvel_Dc, definindo o eixo x = editora e cor do preenchimento de acordo com o gênero.
geom_bar(position = "fill", color = "black") + # Adiciona barras empilhadas ao gráfico, onde a altura das barras representa a proporção relativa de cada gênero dentro de cada editora.
labs(x = NULL, # Retira o rótulo do eixo x.
y = "Percentual", # Modifica o rótulo do eixo y.
title = "Concentração de gêneros por editora", # Adiciona um título.
fill = "Gênero") + # Modifica o nome da legenda.
theme_classic() + # Define um estilo clássico para o gráfico.
theme(plot.title = element_text(hjust = 0.5, size = 18, face = "bold"), # Realiza estilizações no título do gráfico.
legend.position = "top", # Modifica o posicionamento da legenda.
axis.text = element_text(size = 11)) + # Modidica o tamanho dos textos dos dados dos eixos.
scale_fill_manual(values = paleta_cores, # Define a paleta de cores manualmente usando as cores do vetor paleta_cores.
labels = c("Feminino", "Masculino", "Indefinido")) + # Define os rótulos para as cores preenchidas, correspondendo aos gêneros "Feminino", "Masculino" e "Indefinido".
scale_x_discrete(labels = c("DC Comics", "Marvel Comics")) # Altera os rótulos do eixo x.A partir desses gráficos, percebemos que a proporção entre a distriução de genêros dos personagens é parecida. Nesse sentido, vemos que a predominância do genêro masculino é bem acentuada, levando em consideração que representam quase 80% de sua totalidade. Em contrapartida, vemos nessa base de dados que a Marvel possui personagens com gênero indefinido, enquanto a DC não.
Personagens por editora
A partir dos gráficos abaixo, percebemos que a editora Marvel Comics possui uma quantidade a mais de persogens em relação a DC Comics.
ggplot(data = marvelDc, mapping = aes(x = Publisher, fill = Publisher)) + # Dado de arvelDc, definindo o eixo x = editora e cor do preenchimento de acordo com a editora também.
geom_bar(color = "black") + # Adiciona um gráfico de barras.
labs(x = "Editora", y = NULL, title = "Personagens por Editora") + # Modifica o rótulo do eixo x, retira o rótulo do eixo y e adiciona um título ao gráfico.
guides(fill = "none") + # Retira a legenda do gráfico.
theme_bw() + # Adiciona um tema com fundo branco ao gráfico.
theme(plot.title = element_text(hjust = 0.5, size = 15, face = "bold"), #Define diferentes elementos visuais do gráfico, como o título centralizado, o tamanho e estilo da fonte dos títulos dos eixos, tamanho da fonte do texto do eixo, tamanho do texto das faixas e assim por diante.
axis.title = element_text(size = 12, face = "bold"),
axis.text = element_text(size = 11),
strip.text = element_text(size = 13)) +
theme(plot.title = element_text(hjust = 0.5, size = 18, face = "bold"), # Realiza estilizações no título do gráfico.
legend.position = "top", # Modifica a posição da legenda para o topo do gráfico.
axis.text = element_text(size = 11)) + # Modidica o tamanho dos textos dos dados dos eixos.
scale_fill_manual(values = c("#1F83C2", "#D93030")) + # Adicona um paleta de cores referente as editoras.
geom_text(stat = 'count', aes(label = stat(count)), vjust = -0.3, size = 4, color = "black") # Adiciona os valores correspondentes as editoras.dados <- data.frame(Editora = c("DC", "Marvel"), # Cria um Data Frame contendo os valores de personagens de cada editora.
Valor = c(1386, 2352))
dados <- transform(dados, angulo_inicial = cumsum(Valor) - Valor, # Calcula os ângulos para cada editora.
angulo_final = cumsum(Valor))
dados <- transform(dados, Porcentagem = round(Valor / sum(Valor) * 100, 2)) # Calcula as porcentagens com 2 casas decimais.
# CRIANDO GRÁFICO DE PIZZA
ggplot(dados, aes(x = 1, y = Valor, fill = Editora)) +
geom_bar(stat = "identity", color = "black", size = 1.2) +
coord_polar(theta = "y") +
labs(x = NULL, y = NULL, title = "Personagens por Editora") + # Retira os nomes dos eixos e adiciona um título ao gráfico.
theme_void() + # Adiciona um tema com fundo vazio.
theme(plot.title = element_text(hjust = 0.5, size = 15, face = "bold")) + # Adiciona estilizações no título.
scale_fill_manual(values = c("#1F83C2", "#D93030")) + # Adiciona uma paleta de cores de acordo com as editoras.
geom_text(aes(label = paste0(Porcentagem, "%")), # Adiciona a porcentagem correspondente a cada editora.
position = position_stack(vjust = 0.5), # Posiciona o texto no centro do setor circular.
size = 6, color = "white") # Adiciona cor e tamanho ao texto.## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Alinhamento do Personagem
Fazemos o mesmo processo do tópico anterior. Dessa vez, trabalharemos com a porcentagem de alinhamento dos personagem por editoras, ou seja, vamos analisar a concentração de heróis, vilões, neutros e indefinidos em ambas.
alignment_publisher <- marvelDc %>%
group_by(Publisher, Alignment) %>%
summarize(N = n()) %>%
mutate(freq = N / sum(N),
pct = round((freq*100), 0))## `summarise()` has grouped output by 'Publisher'. You can override using the
## `.groups` argument.
alignment_publisher %>% group_by(Publisher) %>% summarize(total = sum(pct))## # A tibble: 2 × 2
## Publisher total
## <chr> <dbl>
## 1 DC Comics 100
## 2 Marvel Comics 100
ggplot(alignment_publisher, aes(x = Alignment, y = pct, fill = Alignment)) + # Dado de alignment_publisher, definindo o eixo x = alinhamento do personagem, y = porcentagem e cor do preenchimento de acordo com o alinhamento,
geom_col(color = "black") + # Adiciona as barras ao gráfico com bordas pretas.
labs(x = "Gênero", y = NULL, title = "Concentração de alinhamento por editora") + # Define os rótulos dos eixos x e y, e um título para o gráfico.
guides(fill = FALSE) + # Remove a legenda da cor de preenchimento, pois ela é desnecessária neste caso.
facet_grid(~ Publisher) + # Faz a divisão em dois gráficos de acordo com a editora.
theme_bw() + # Define o tema do gráfico como um fundo branco.
theme(plot.title = element_text(hjust = 0.5, size = 15, face = "bold"), # Define diferentes elementos visuais do gráfico, como o título centralizado, o tamanho e estilo da fonte dos títulos dos eixos, tamanho da fonte do texto do eixo, tamanho do texto das faixas e assim por diante.
axis.title = element_text(size = 12, face = "bold"),
axis.text = element_text(size = 11),
strip.text = element_text(size = 13)) +
scale_fill_manual(values = c("#081B42", "#DAA520", "#CD5A35")) + # Define as cores manualmente para cada alinhamento.
scale_x_discrete(labels = c("Vilão", "Herói", "Neutro", "Indefinido")) + # Altera os rótulos do eixo x.
scale_y_continuous(labels = function(x) paste0(format(x, scientific = FALSE), "%")) + # Altera os rótulos do eixo y para mostrar as porcentagens com o símbolo de porcentagem (%).
geom_text(aes(label = paste0(pct, "%")), vjust = -0.3, size = 3.5) # Adiciona rótulos de texto acima das barras, exibindo as porcentagens correspondentes.paleta_cores <- c("#081B42", "#DAA520", "#CD5A35") # Cria um vetor com duas cores que serão usadas posteriormente
ggplot(data = marvelDc, mapping = aes(x = Publisher, fill = Alignment)) + # Dado de marvel_Dc, definindo o eixo x = editora e cor do preenchimento de acordo com o alinhamento do personagem.
geom_bar(position = "fill", color = "black") + # Adiciona barras empilhadas ao gráfico, onde a altura das barras representa a proporção relativa de cada gênero dentro de cada editora.
labs(x = NULL, # Retira o rótulo do eixo x.
y = "Percentual", # Modifica o rótulo do eixo y.
title = "Concentração de alinhamento por editora", # Adiciona um título.
fill = "Alinhamento") + # Modifica o rótulo da legenda.
theme_classic() + # Define um estilo clássico para o gráfico.
theme(plot.title = element_text(hjust = 0.5, size = 18, face = "bold"), # Realiza estilizações no título do gráfico.
legend.position = "top", # Modifica a posição da legenda para o topo do gráfico.
axis.text = element_text(size = 11)) + # Modidica o tamanho dos textos dos dados dos eixos.
scale_fill_manual(values = paleta_cores, # Define a paleta de cores manualmente usando as cores do vetor paleta_cores.
labels = c("Vilão", "Herói", "Neutro", "Indefinido")) + # Define os rótulos para as cores preenchidas, correspondendo aos alinhamentos dos personagens.
scale_x_discrete(labels = c("DC Comics", "Marvel Comics")) # Altera os rótulos do eixo x.Nessa análise, percebemos que a concentração dos alinhamentos dos personagens por editora é bem próxima, mesmo existindo números distintos de sujeitos nelas. Também foi constatado que existe aproximadamente o dobro de heróis em relação a vilões nessa base de dados.
Box Plot de Inteligência
Nesse gráfico, percebemos que existem personagens mais inteligentes na DC do que na Marvel em proporção, levando em consideração que os limites máximos se apresentam de maneira diferente. Também foi constatado que na DC Comics temos uma grande concentração de personagens entre os quartis 2 e 3, enquanto na Marvel temos uma grande concentração de indivíduos entre os quartis 1 e 2.
ggplot(data = marvelDc, mapping = aes(x = Publisher, y = Intelligence, fill = Publisher)) + # Trabalharemos com os dados de "marvelDC", o eixo x e a cor de preenchimento representam a editora tratada, o eixo y está relacionado com o nível de inteligência.
geom_errorbar(stat = "boxplot", width = 0.35) + # Adiciona as linhas referentes aos extremos dos gráficos.
geom_boxplot(width = 0.7, outlier.shape = 1, outlier.size = 2) + # Adiciona um Box Plot com largura, e no caso de existência de outliers, os exibe no gráfico.
stat_summary(fun = function(x) quantile(x, probs = c(0.25, 0.5, 0.75)), # Adiciona os rótulos dos quartis ao box plot.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Q", c(1, 2, 3), ": ", round(..y..))), # Adiona o rótulo do quartil acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = -0.20) + # Translada verticalmente o texto.
stat_summary(fun = max, # Verifica o limite superior do gráfico.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Máx: ", round(..y..))), # Adiciona o rótulo de máximo acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = -0.20) + # Translada verticalmente o texto.
stat_summary(fun = min, # Verifica o limite inferior do gráfico.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Mín: ", round(..y..))), # Adiciona o rótulo de mínimo acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = -0.20) + # Translada verticalmente o texto.
guides(fill = "none") + # Retira a legenda do gráfico.
labs(x = NULL, y = "Escala de Inteligência", title = "Box Plot de nível de inteligência dos personagens") + # Retira o rótulo do eixo x, modifica o rótulo do eixo y e adiciona um texto ao gráfico.
theme_bw() + # Adiona um tema ao gráfico.
theme(plot.title = element_text(hjust = 0.5, size = 15, face = "bold"), # Realiza estilizações no título do gráfico.
axis.title = element_text(size = 12, face = "bold"), # Realiza estilizações nos eixos gráfico.
axis.text = element_text(size = 11)) + # Modidica o tamanho dos textos dos dados dos eixos.
scale_fill_manual(values = c("#1F83C2", "#D93030")) # Define as cores manualmente para as editoras.## Warning: The dot-dot notation (`..y..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(y)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Box Plot de Força
Nesse gráfico, percebemos que em ambas as editoras, o mínimo, máximo e a mediana do nível de força são iguais. Em contrapartida, os dados da Marvel estão mais comprimidos entre os Quartis 1 e 3 se comparados aos da DC que se apresentam de maneiras mais dispersas. Além disso, pode-se observar que a região entre os Quartis 2 e 3 da DC é maior do que a da Marvel, ou seja, a DC Comics possui mais personagens com níveis de poder elevados em proporção.
ggplot(data = marvelDc, mapping = aes(x = Publisher, y = Strength, fill = Publisher)) + # Trabalharemos com os dados de "marvelDC", o eixo x e a cor de preenchimento representam a editora tratada, o eixo y está relacionado com o nível de força.
geom_errorbar(stat = "boxplot", width = 0.35) + # Adiciona as linhas referentes aos extremos dos gráficos.
geom_boxplot(width = 0.7, outlier.shape = 1, outlier.size = 2) + # Adiciona um Box Plot com largura, e no caso de existência de outliers, os exibe no gráfico.
stat_summary(fun = function(x) quantile(x, probs = c(0.25, 0.5, 0.75)), # Adiciona os rótulos dos quartis ao box plot.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Q", c(1, 2, 3), ": ", round(..y..))), # Adiona o rótulo do quartil acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = -0.20) + # Translada verticalmente o texto.
stat_summary(fun = max, # Verifica o limite superior do gráfico.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Máx: ", round(..y..))), # Adiciona o rótulo de máximo acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = -0.20) + # Translada verticalmente o texto.
stat_summary(fun = min, # Verifica o limite inferior do gráfico.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Mín: ", round(..y..))), # Adiciona o rótulo de mínimo acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = -0.20) + # Translada verticalmente o texto.
guides(fill = "none") + # Retira a legenda do gráfico.
labs(x = NULL, y = "Escala de força", title = "Box Plot de nível de força dos personagens") + # Retira o rótulo do eixo x, modifica o rótulo do eixo y e adiciona um texto ao gráfico.
theme_bw() + # Adiona um tema ao gráfico.
theme(plot.title = element_text(hjust = 0.5, size = 15, face = "bold"), # Realiza estilizações no título do gráfico.
axis.title = element_text(size = 12, face = "bold"), # Realiza estilizações nos eixos gráfico.
axis.text = element_text(size = 11)) + # Modidica o tamanho dos textos dos dados dos eixos.
scale_fill_manual(values = c("#1F83C2", "#D93030")) # Define as cores manualmente para as editoras.Box Plot de Velocidade
Nessa comparação, percebemos que ambas as editoras apresentam mínimos e máximos iguais. Em contrapartida, na Marvel temos uma concentração maior de personagens na zona entre os quartis 1 e 3 se comparada a sua concorrente, que possui uma maior variação de velocidades nessa região.
ggplot(data = marvelDc, mapping = aes(x = Publisher, y = Speed, fill = Publisher)) + # Trabalharemos com os dados de "marvelDC", o eixo x e a cor de preenchimento representam a editora tratada, o eixo y está relacionado com o nível de velocidade.
geom_errorbar(stat = "boxplot", width = 0.35) + # Adiciona as linhas referentes aos extremos dos gráficos.
geom_boxplot(width = 0.7, outlier.shape = 1, outlier.size = 2) + # Adiciona um Box Plot com largura, e no caso de existência de outliers, os exibe no gráfico.
stat_summary(fun = function(x) quantile(x, probs = c(0.25, 0.5, 0.75)), # Adiciona os rótulos dos quartis ao box plot.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Q", c(1, 2, 3), ": ", round(..y..))), # Adiona o rótulo do quartil acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = -0.20) + # Translada verticalmente o texto.
stat_summary(fun = max, # Verifica o limite superior do gráfico.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Máx: ", round(..y..))), # Adiciona o rótulo de máximo acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = -0.20) + # Translada verticalmente o texto.
stat_summary(fun = min, # Verifica o limite inferior do gráfico.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Mín: ", round(..y..))), # Adiciona o rótulo de mínimo acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = -0.20) + # Translada verticalmente o texto.
guides(fill = "none") + # Retira a legenda do gráfico.
labs(x = NULL, y = "Escala de velocidade", title = "Box Plot de nível de velocidade dos personagens") + # Retira o rótulo do eixo x, modifica o rótulo do eixo y e adiciona um texto ao gráfico.
theme_bw() + # Adiona um tema ao gráfico.
theme(plot.title = element_text(hjust = 0.5, size = 15, face = "bold"), # Realiza estilizações no título do gráfico.
axis.title = element_text(size = 12, face = "bold"), # Realiza estilizações nos eixos gráfico.
axis.text = element_text(size = 11)) + # Modidica o tamanho dos textos dos dados dos eixos.
scale_fill_manual(values = c("#1F83C2", "#D93030")) # Define as cores manualmente para as editoras.Box Plot de Resistênicia
Nesse gráfico, percebemos que existem personagens da DC com nível maior de resistência do que da Marvel, levando em consideração que os máximos são diferentes. Em contrapartida, vemos um gráfico mais achatado da Marvel, mostrando que existem persogens mais tipados no quesito de resistência.
ggplot(data = marvelDc, mapping = aes(x = Publisher, y = Durability, fill = Publisher)) + # Trabalharemos com os dados de "marvelDC", o eixo x e a cor de preenchimento representam a editora tratada, o eixo y está relacionado com o nível de resistênicia.
geom_errorbar(stat = "boxplot", width = 0.35) + # Adiciona as linhas referentes aos extremos dos gráficos.
geom_boxplot(width = 0.7, outlier.shape = 1, outlier.size = 2) + # Adiciona um Box Plot com largura, e no caso de existência de outliers, os exibe no gráfico.
stat_summary(fun = function(x) quantile(x, probs = c(0.25, 0.5, 0.75)), # Adiciona os rótulos dos quartis ao box plot.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Q", c(1, 2, 3), ": ", round(..y..))), # Adiona o rótulo do quartil acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = -0.20) + # Translada verticalmente o texto.
stat_summary(fun = max, # Verifica o limite superior do gráfico.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Máx: ", round(..y..))), # Adiciona o rótulo de máximo acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = -0.20) + # Translada verticalmente o texto.
stat_summary(fun = min, # Verifica o limite inferior do gráfico.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Mín: ", round(..y..))), # Adiciona o rótulo de mínimo acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = -0.20) + # Translada verticalmente o texto.
guides(fill = "none") + # Retira a legenda do gráfico.
labs(x = NULL, y = "Escala de resistênicia", title = "Box Plot de nível de resistênicia dos personagens") + # Retira o rótulo do eixo x, modifica o rótulo do eixo y e adiciona um texto ao gráfico.
theme_bw() + # Adiona um tema ao gráfico.
theme(plot.title = element_text(hjust = 0.5, size = 15, face = "bold"), # Realiza estilizações no título do gráfico.
axis.title = element_text(size = 12, face = "bold"), # Realiza estilizações nos eixos gráfico.
axis.text = element_text(size = 11)) + # Modidica o tamanho dos textos dos dados dos eixos.
scale_fill_manual(values = c("#1F83C2", "#D93030")) # Define as cores manualmente para as editoras.Box Plot de Poder
No Box Plot de Poder da DC Comics, percebemos que existe uma grande concentração de personagens muito poderosos e poucos personagens com níveis de poderes baixos. Enquanto isso a Marvel possue personagens com grandes níveis de poder também, porém numa escala menor que a DC, o que nos leva a entender que a DC Comics possue os personagens mais poderosos.
ggplot(data = marvelDc, mapping = aes(x = Publisher, y = Power, fill = Publisher)) + # Trabalharemos com os dados de "marvelDC", o eixo x e a cor de preenchimento representam a editora tratada, o eixo y está relacionado com o nível de poder.
geom_errorbar(stat = "boxplot", width = 0.35) + # Adiciona as linhas referentes aos extremos dos gráficos.
geom_boxplot(width = 0.7, outlier.shape = 1, outlier.size = 2) + # Adiciona um Box Plot com largura, e no caso de existência de outliers, os exibe no gráfico.
stat_summary(fun = function(x) quantile(x, probs = c(0.25, 0.5, 0.75)), # Adiciona os rótulos dos quartis ao box plot.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Q", c(1, 2, 3), ": ", round(..y..))), # Adiona o rótulo do quartil acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = 1.20) + # Translada verticalmente o texto.
stat_summary(fun = max, # Verifica o limite superior do gráfico.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Máx: ", round(..y..))), # Adiciona o rótulo de máximo acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = -0.20) + # Translada verticalmente o texto.
stat_summary(fun = min, # Verifica o limite inferior do gráfico.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Mín: ", round(..y..))), # Adiciona o rótulo de mínimo acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = -0.20) + # Translada verticalmente o texto.
guides(fill = "none") + # Retira a legenda do gráfico.
labs(x = NULL, y = "Escala de poder", title = "Box Plot de nível de poder dos personagens") + # Retira o rótulo do eixo x, modifica o rótulo do eixo y e adiciona um texto ao gráfico.
theme_bw() + # Adiona um tema ao gráfico.
theme(plot.title = element_text(hjust = 0.5, size = 15, face = "bold"), # Realiza estilizações no título do gráfico.
axis.title = element_text(size = 12, face = "bold"), # Realiza estilizações nos eixos gráfico.
axis.text = element_text(size = 11)) + # Modidica o tamanho dos textos dos dados dos eixos.
scale_fill_manual(values = c("#1F83C2", "#D93030")) # Define as cores manualmente para as editoras.Box Plot de Combate
Nesse gráfico, percebemos que existem muitos persogens com nível alto de combate nas duas editoras, considerando o comprimento entre o quartil 3 e o limite superior. Entretanto, a maior parte dos personagens da Marvel estão nos Quartis 2 e 3, enquanto a maior parte dos personagens da DC estão entre os Quartis 1 e 2, o que nos leva a entender que a Marvel Comics possue mais personagens com níveis de combate elevado do que a DC Comics.
ggplot(data = marvelDc, mapping = aes(x = Publisher, y = Combat, fill = Publisher)) + # Trabalharemos com os dados de "marvelDC", o eixo x e a cor de preenchimento representam a editora tratada, o eixo y está relacionado com o nível de combate.
geom_errorbar(stat = "boxplot", width = 0.35) + # Adiciona as linhas referentes aos extremos dos gráficos.
geom_boxplot(width = 0.7, outlier.shape = 1, outlier.size = 2) + # Adiciona um Box Plot com largura, e no caso de existência de outliers, os exibe no gráfico.
stat_summary(fun = function(x) quantile(x, probs = c(0.25, 0.5, 0.75)), # Adiciona os rótulos dos quartis ao box plot.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Q", c(1, 2, 3), ": ", round(..y..))), # Adiona o rótulo do quartil acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = -0.20) + # Translada verticalmente o texto.
stat_summary(fun = max, # Verifica o limite superior do gráfico.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Máx: ", round(..y..))), # Adiciona o rótulo de máximo acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = -0.20) + # Translada verticalmente o texto.
stat_summary(fun = min, # Verifica o limite inferior do gráfico.
geom = "text", # Adiciona um objeto de texto.
aes(label = paste0("Mín: ", round(..y..))), # Adiciona o rótulo de mínimo acompanhado do valor dele.
size = 3.5, # Modifica o tamanho do texto.
vjust = -0.20) + # Translada verticalmente o texto.
guides(fill = "none") + # Retira a legenda do gráfico.
labs(x = NULL, y = "Escala de combate", title = "Box Plot de nível de combate dos personagens") + # Retira o rótulo do eixo x, modifica o rótulo do eixo y e adiciona um texto ao gráfico.
theme_bw() + # Adiona um tema ao gráfico.
theme(plot.title = element_text(hjust = 0.5, size = 15, face = "bold"), # Realiza estilizações no título do gráfico.
axis.title = element_text(size = 12, face = "bold"), # Realiza estilizações nos eixos gráfico.
axis.text = element_text(size = 11)) + # Modidica o tamanho dos textos dos dados dos eixos.
scale_fill_manual(values = c("#1F83C2", "#D93030")) # Define as cores manualmente para as editoras.Histograma de Força
No histograma da DC Comics, percebemos que existe uma certa dualidade entre o nível de força entre os personagens, levando em consideração que existe uma concentração muito grande no intervalo de 10 à 20 e no intervalo de 90 à 100, isso implica que existe uma grande quantia de seres muito fortes e outra grande quantia de personagens muito fracos.
ggplot(data.frame(marvelDc), aes(x = Strength, fill = Publisher)) + # Dado de marvel_Dc, definindo o eixo x = força e cor do preenchimento de acordo com a editora.
geom_histogram(color = "black", bins = 10) + # Adiciona o histograma com contorno preto ao gráfico com 10 intervalos trabalhados.
facet_wrap(~ Publisher) + # Faz a divisão em dois gráficos de acordo com a editora.
guides(fill = "none") + # Retira a legenda das editoras, visto que as cores e o texto já indicam a informação necessária.
labs(x = "Níveis de Força", y = "Frequência", title = "Box Plot de Força") + # Define os rótulos dos eixos x e y, o título do gráfico.
theme_bw() + # Define o tema do gráfico como um fundo branco.
theme(plot.title = element_text(hjust = 0.5, size = 15, face = "bold"), # Realiza estilizações no título do gráfico.
axis.title = element_text(size = 12, face = "bold"), # Realiza estilizações nos eixos gráfico.
axis.text = element_text(size = 11), # Modidica o tamanho dos textos dos dados dos eixos.
strip.text = element_text(size = 13)) + # Modifica o tamanho dos rótulos das editoras no gráfico
scale_fill_manual(values = c("#1F83C2", "#D93030")) # Define as cores manualmente para as editoras.Histograma de Velocidade
Neste gráfico, temos um histograma da Marvel mais distorcido à direita, isso indica que há uma concentração maior de valores menores e uma dispersão maior de valores maiores, esse “decrescimento” faz com que temos uma concentração mais elevada em intervalos de números menores do que maiores, ou seja, temos muito mais personagens mais lentos do que rápidos nessa editora.
ggplot(data.frame(marvelDc), aes(x = Speed, fill = Publisher)) + # Dado de marvel_Dc, definindo o eixo x = velocidade e cor do preenchimento de acordo com a editora.
geom_histogram(color = "black", bins = 10) + # Adiciona o histograma com contorno preto ao gráfico com 10 intervalos trabalhados.
facet_wrap(~ Publisher) + # Faz a divisão em dois gráficos de acordo com a editora.
labs(x = "Níveis de Velocidade", y = "Frequência", title = "Box Plot de Velocidade") + # Define os rótulos dos eixos x e y, o título do gráfico.
guides(fill = "none") + # Retira a legenda das editoras, visto que as cores e o texto já indicam a informação necessária.
theme_bw() + # Define o tema do gráfico como um fundo branco.
theme(plot.title = element_text(hjust = 0.5, size = 15, face = "bold"), # Realiza estilizações no título do gráfico.
axis.title = element_text(size = 12, face = "bold"), # Realiza estilizações nos eixos gráfico.
axis.text = element_text(size = 11), # Modidica o tamanho dos textos dos dados dos eixos.
strip.text = element_text(size = 13)) + # Modifica o tamanho dos rótulos das editoras no gráfico
scale_fill_manual(values = c("#1F83C2", "#D93030")) # Define as cores manualmente para as editoras.Histograma de Resistência
Verificamos que o histograma da editora Marvel é distorcido à esquerda, ou seja, ele indica uma concentração maior de valores maiores e uma dispersão maior de valores menores, com a cauda da distribuição se estendendo mais para a esquerda, ou seja, temos muitos personagens com um grande nível de resistência. Em contrapardida, na DC Comics temos poucos personagens com nível de resistência máxima, como mostra a última barra de cor azul.
ggplot(data.frame(marvelDc), aes(x = Durability, fill = Publisher)) + # Dado de marvel_Dc, definindo o eixo x = resitência e cor do preenchimento de acordo com a editora.
geom_histogram(color = "black", bins = 10) + # Adiciona o histograma com contorno preto ao gráfico com 10 intervalos trabalhados.
facet_wrap(~ Publisher) + # Faz a divisão em dois gráficos de acordo com a editora.
labs(x = "Níveis de Resistência", y = "Frequência", title = "Box Plot de Resistência") + # Define os rótulos dos eixos x e y, o título do gráfico.
guides(fill = "none") + # Retira a legenda das editoras, visto que as cores e o texto já indicam a informação necessária.
theme_bw() + # Define o tema do gráfico como um fundo branco.
theme(plot.title = element_text(hjust = 0.5, size = 15, face = "bold"), # Realiza estilizações no título do gráfico.
axis.title = element_text(size = 12, face = "bold"), # Realiza estilizações nos eixos gráfico.
axis.text = element_text(size = 11), # Modidica o tamanho dos textos dos dados dos eixos.
strip.text = element_text(size = 13)) + # Modifica o tamanho dos rótulos das editoras no gráfico.
scale_fill_manual(values = c("#1F83C2", "#D93030")) # Define as cores manualmente para as editoras.Histograma de Poder
Em ambos os histogramas, percebemos que existe uma grande concentração de personagens com nível de poder elevado (90 à 100).
ggplot(data.frame(marvelDc), aes(x = Power, fill = Publisher)) + # Dado de marvel_Dc, definindo o eixo x = poder e cor do preenchimento de acordo com a editora.
geom_histogram(color = "black", bins = 10) + # Adiciona o histograma com contorno preto ao gráfico com 10 intervalos trabalhados.
facet_wrap(~ Publisher) + # Faz a divisão em dois gráficos de acordo com a editora.
labs(x = "Níveis de Poder", y = "Frequência", title = "Box Plot de Poder") + # Define os rótulos dos eixos x e y, o título do gráfico.
guides(fill = "none") + # Retira a legenda das editoras, visto que as cores e o texto já indicam a informação necessária.
theme_bw() + # Define o tema do gráfico como um fundo branco.
theme(plot.title = element_text(hjust = 0.5, size = 15, face = "bold"), # Realiza estilizações no título do gráfico.
axis.title = element_text(size = 12, face = "bold"), # Realiza estilizações nos eixos gráfico.
axis.text = element_text(size = 11), # Modidica o tamanho dos textos dos dados dos eixos.
strip.text = element_text(size = 13)) + # Modifica o tamanho dos rótulos das editoras no gráfico.
scale_fill_manual(values = c("#1F83C2", "#D93030")) # Define as cores manualmente para as editoras.Histograma de Combate
No histrograma de combate de persogens da Marvel, temos que existe uma grande concentração de personagens com nível médio de combate.
ggplot(data.frame(marvelDc), aes(x = Combat,fill = Publisher)) + # Dado de marvel_Dc, definindo o eixo x = combate e cor do preenchimento de acordo com a editora.
geom_histogram(color = "black", bins = 10) + # Adiciona o histograma com contorno preto ao gráfico com 10 intervalos trabalhados.
facet_wrap(~ Publisher) + # Faz a divisão em dois gráficos de acordo com a editora.
labs(x = "Níveis de Combate", y = "Frequência", title = "Box Plot de Combate") + # Define os rótulos dos eixos x e y, o título do gráfico.
guides(fill = "none") + # Retira a legenda das editoras, visto que as cores e o texto já indicam a informação necessária.
theme_bw() + # Define o tema do gráfico como um fundo branco.
theme(plot.title = element_text(hjust = 0.5, size = 15, face = "bold"), # Realiza estilizações no título do gráfico.
axis.title = element_text(size = 12, face = "bold"), # Realiza estilizações nos eixos gráfico.
axis.text = element_text(size = 11), # Modidica o tamanho dos textos dos dados dos eixos.
strip.text = element_text(size = 13)) + # Modifica o tamanho dos rótulos das editoras no gráfico.
scale_fill_manual(values = c("#1F83C2", "#D93030")) # Define as cores manualmente para as editoras.Top 30 personagens mais inteligentes
Nesse gráfico, fizemos um Top 30 dos persogens mais inteligentes, em que a cor faz relação com a editora do indivíduo. Em especial, temos um outlier que possui um nível maior de inteligência que os demais, o Mister Mxyzptlk, que é um personagem da DC Comics, conhecido como um vilão recorrente do Super-Homem, ele é uma entidade mágica extradimensional da Quinta Dimensão, com poderes incríveis e uma personalidade impish (travessa). Também tivemos resultados esperados, como o Professor X, Homem de Ferro, Batman, entre outros.
marvelDc_inteligencia <- marvelDc %>% # Cria um novo dataframe chamado marvelDc_inteligencia.
group_by(Name, Publisher) %>% # Agrupa os dados por nome (Name) e editora (Publisher).
distinct(Intelligence) %>% # Mantém apenas os valores únicos da variável de inteligência (Intelligence) para cada combinação de nome e editora. Isso garante que cada personagem apareça apenas uma vez no resultado.
select(Name, Intelligence) %>% # Seleciona apenas as colunas de nome e inteligência.
arrange(-Intelligence) # Ordena os dados em ordem decrescente de inteligência. Isso faz com que os personagens mais inteligentes fiquem no topo.## Adding missing grouping variables: `Publisher`
ggplot(marvelDc_inteligencia[1:30, ], aes(x = reorder(Name, Intelligence), y = Intelligence)) + # Cria o objeto básico do gráfico usando o dataframe marvelDc_inteligencia contendo os 30 personagens mais inteligentes. O eixo x representa o nome dos personagens, com a ordem determinada pela inteligência, e o eixo y representa a escala de inteligência.
geom_bar(stat = "identity", aes(fill = Publisher)) + # Adiciona as barras ao gráfico, onde a altura das barras é determinada pelos valores de inteligência. A cor de preenchimento das barras é definida com base na editora (Publisher).
ylim(0, 120) + # Delimita o o intervalo trabalhado do eixo y.
labs(x = NULL, y = "Nível de inteligência", title = "Top 30 personagens mais inteligentes", fill = "Editora") + # Retira o rótulo do eixo x, modifica o rótulo do eixo y, adiciona um título e modifica o nome da legenda.
coord_flip() + # Inverte o eixo x com o eixo y.
theme_bw() + # Define o tema do gráfico como um fundo branco.
scale_fill_manual(values = c("#1F83C2", "#D93030")) + # Define as cores manualmente para as editoras.
theme(plot.title = element_text(hjust = 0.5, size = 18, face = "bold"), # Realiza modifições no título.
legend.position = "top", # Modifica a posição da legenda para o topo.
axis.text = element_text(size = 7.5)) # Modidica o tamanho dos textos dos dados dos eixos.Top 30 personagens mais fortes
Em seguida, fizemos um Top 30 de personagens mais fortes de ambas as editoras, tivemos resultados interessantes como o Titã Thanos, o Hulk e o Superman, como já esperado. Alguns personagens chamaram a atenção pelo nível de força, como o Juggernaut (Fanático), em pesquisas foi descoberto que o personagem possui força ilimitada em movimento: “Uma característica distintiva do Fanático é sua habilidade de se tornar invencível quando está em movimento. Uma vez que ele começa a se mover em uma determinada direção, nada pode pará-lo até que ele decida parar. Essa capacidade é conhecida como”Momentum Invulnerability” e o torna virtualmente imparável quando está em movimento”.
marvelDc_forca <- marvelDc %>% # Cria um novo dataframe chamado marvelDc_forca.
group_by(Name, Publisher) %>% # Agrupa os dados por nome (Name) e editora (Publisher).
distinct(Strength) %>% # Mantém apenas os valores únicos da variável de força (Strength) para cada combinação de nome e editora. Isso garante que cada personagem apareça apenas uma vez no resultado.
select(Name, Strength) %>% # Seleciona apenas as colunas de nome e força.
arrange(-Strength) # Ordena os dados em ordem decrescente de força. Isso faz com que os personagens mais fortes fiquem no topo.## Adding missing grouping variables: `Publisher`
ggplot(marvelDc_forca[1:30, ], aes(x = reorder(Name, Strength), y = Strength)) + # Cria o objeto básico do gráfico usando o dataframe marvelDc_forca contendo os 30 personagens mais fortes. O eixo x representa o nome dos personagens, com a ordem determinada pela força, e o eixo y representa a escala de força.
geom_bar(stat = "identity", aes(fill = Publisher)) + # Adiciona as barras ao gráfico, onde a altura das barras é determinada pelos valores de velocidade. A cor de preenchimento das barras é definida com base na editora (Publisher).
ylim(0, 100) + # Delimita o o intervalo trabalhado do eixo y.
labs(x = NULL, y = "Nível de força", title = "Top 30 personagens mais fortes", fill = "Editora") + # Retira o rótulo do eixo x, modifica o rótulo do eixo y, adiciona um título e modifica o nome da legenda.
coord_flip() + # Inverte o eixo x com o eixo y.
theme_bw() + # Define o tema do gráfico como um fundo branco.
scale_fill_manual(values = c("#1F83C2", "#D93030")) + # Define as cores manualmente para as editoras.
theme(plot.title = element_text(hjust = 0.5, size = 18, face = "bold"), # Realiza modifições no título.
legend.position = "top", # Modifica a posição da legenda para o topo.
axis.text = element_text(size = 7.5)) # Modidica o tamanho dos textos dos dados dos eixos.Top 30 personagens mais rápidos
Fizemos também um top 30 dos personagens mais rápidos, o primeiro ponto notável é a existência de diversos Flash’s no gráfico, isso se dá pela criação de vários HQ’s em que os personagens são de unirversos distintos. Como destaque esperado temos o Zoom, que é um personagem da DC Comics e um dos principais antagonistas do Flash, ele é um velocista com habilidades sobre-humanas, é conhecido por sua velocidade incrível e por ser um adversário formidável para o Flash.
marvelDc_velocidade <- marvelDc %>% # Cria um novo dataframe chamado marvelDc_velocidade.
group_by(Name, Publisher) %>% # Agrupa os dados por nome (Name) e editora (Publisher).
distinct(Speed) %>% # Mantém apenas os valores únicos da variável de velocidade (Speed) para cada combinação de nome e editora. Isso garante que cada personagem apareça apenas uma vez no resultado.
select(Name, Speed) %>% # Seleciona apenas as colunas de nome e velocidade.
arrange(-Speed) # Ordena os dados em ordem decrescente de velocidade. Isso faz com que os personagens mais rápidos fiquem no topo.## Adding missing grouping variables: `Publisher`
ggplot(marvelDc_velocidade[1:30, ], aes(x = reorder(Name, Speed), y = Speed)) + # Cria o objeto básico do gráfico usando o dataframe marvelDc_velocidade contendo os 30 personagens mais rápidos. O eixo x representa o nome dos personagens, com a ordem determinada pela velocidade, e o eixo y representa a velocidade.
geom_bar(stat = "identity", aes(fill = Publisher)) + # Adiciona as barras ao gráfico, onde a altura das barras é determinada pelos valores de velocidade. A cor de preenchimento das barras é definida com base na editora (Publisher).
ylim(0, 100) + # Delimita o o intervalo trabalhado do eixo y.
labs(x = NULL, y = "Nível de velocidade", title = "Top 30 personagens mais rápidos", fill = "Editora") + # Retira o rótulo do eixo x, modifica o rótulo do eixo y, adiciona um título e modifica o nome da legenda.
coord_flip() + # Inverte o eixo x com o eixo y.
theme_bw() + # Define o tema do gráfico como um fundo branco.
scale_fill_manual(values = c("#1F83C2", "#D93030")) + # Define as cores manualmente para as editoras.
theme(plot.title = element_text(hjust = 0.5, size = 18, face = "bold"), # Realiza modifições no título.
legend.position = "top", # Modifica a posição da legenda para o topo.
axis.text = element_text(size = 7.5)) # Modidica o tamanho dos textos dos dados dos eixos.Top 30 personagens mais resistentes
Nessa análise dos top 30 personagens mais resistentes, temos quatro outliers, o Doomsday (Apocalypse - um dos principais vilões do Superman), o Stardust (um membro dos Arautos de Galactus), o Surfista Prateado (herói cósmico da Marvel) e o Nova (herói cósmico da Marvel). Assim, percebemos que persogens de nível cósmico, como os quatro mencionados, possuem maior nível de resistência.
marvelDc_durabilidade <- marvelDc %>% # Cria um novo dataframe chamado marvelDc_durabilidade.
group_by(Name, Publisher) %>% # Agrupa os dados por nome (Name) e editora (Publisher).
distinct(Durability) %>% # Mantém apenas os valores únicos da variável de durabiidade (Durability) para cada combinação de nome e editora. Isso garante que cada personagem apareça apenas uma vez no resultado.
select(Name, Durability) %>% # Seleciona apenas as colunas de nome e durabilidade.
arrange(-Durability) # Ordena os dados em ordem decrescente de resistência. Isso faz com que os personagens mais resistentes fiquem no topo.
ggplot(marvelDc_durabilidade[1:30, ], aes(x = reorder(Name, Durability), y = Durability)) + # Cria o objeto básico do gráfico usando o dataframe marvelDc_durabilidade contendo os 30 personagens mais resistentes. O eixo x representa o nome dos personagens, com a ordem determinada pela resistência, e o eixo y representa a resistência.
geom_bar(stat = "identity", aes(fill = Publisher)) + # Adiciona as barras ao gráfico, onde a altura das barras é determinada pelos valores de velocidade. A cor de preenchimento das barras é definida com base na editora (Publisher).
ylim(0, 125) + # Delimita o o intervalo trabalhado do eixo y.
labs(x = NULL, y = "Nível de resistência", title = "Top 30 personagens mais resistentes", fill = "Editora") + # Retira o rótulo do eixo x, modifica o rótulo do eixo y, adiciona um título e modifica o nome da legenda.
coord_flip() + # Inverte o eixo x com o eixo y.
theme_bw() + # Define o tema do gráfico como um fundo branco.
scale_fill_manual(values = c("#1F83C2", "#D93030")) + # Define as cores manualmente para as editoras.
theme(plot.title = element_text(hjust = 0.5, size = 18, face = "bold"), # Realiza modifições no título.
legend.position = "top", # Modifica a posição da legenda para o topo.
axis.text = element_text(size = 7.5)) # Modidica o tamanho dos textos dos dados dos eixos.Top 30 personagens mais poderosos
No top 30 dos personagens mais poderosos, percebemos que todos da listagem recebem nível máximo de poder. É válido ressaltar que os principais vilões das franquias de quadrinhos são os mais poderosos, como o Thanos, Ultron, Apocalypse, Galactus e Darkseid.
marvelDc_poder <- marvelDc %>% # Cria um novo dataframe chamado marvelDc_poder.
group_by(Name, Publisher) %>% # Agrupa os dados por nome (Name) e editora (Publisher).
distinct(Power) %>% # Mantém apenas os valores únicos da variável de poder (Power) para cada combinação de nome e editora. Isso garante que cada personagem apareça apenas uma vez no resultado.
select(Name, Power) %>% # Seleciona apenas as colunas de nome e poder.
arrange(-Power) # Ordena os dados em ordem decrescente de poder. Isso faz com que os personagens mais poderosos fiquem no topo.## Adding missing grouping variables: `Publisher`
ggplot(marvelDc_poder[1:30, ], aes(x = reorder(Name, Power), y = Power)) + # Cria o objeto básico do gráfico usando o dataframe marvelDc_poder contendo os 30 personagens mais poderosos O eixo x representa o nome dos personagens, com a ordem determinada pelo nível de poder, e o eixo y representa o poder.
geom_bar(stat = "identity", aes(fill = Publisher)) + # Adiciona as barras ao gráfico, onde a altura das barras é determinada pelos valores de velocidade. A cor de preenchimento das barras é definida com base na editora (Publisher).
ylim(0, 100) + # Delimita o o intervalo trabalhado do eixo y.
labs(x = NULL, y = "Nível de poder", title = "Top 30 personagens mais poderosos", fill = "Editora") + # Retira o rótulo do eixo x, modifica o rótulo do eixo y, adiciona um título e modifica o nome da legenda.
coord_flip() + # Inverte o eixo x com o eixo y.
theme_bw() + # Define o tema do gráfico como um fundo branco.
scale_fill_manual(values = c("#1F83C2", "#D93030")) + # Define as cores manualmente para as editoras.
theme(plot.title = element_text(hjust = 0.5, size = 18, face = "bold"), # Realiza modifições no título.
legend.position = "top", # Modifica a posição da legenda para o topo.
axis.text = element_text(size = 7.5)) # Modidica o tamanho dos textos dos dados dos eixos.Top 30 dos melhores personagens em combate
Nesse Top 30 pegamos os melhores personagens com estratégias de combate. Temos um outlier que leva a melhor em relação aos outros, o Ares, que é um personagem da Marvel Comics, ele é baseado na figura mitológica grega de mesmo nome, que é o Deus da Guerra. Também é interessante ressaltar que o Batman e suas variações estão dentro do Ranking, confirmando a tese que o Batman sempre está preparado, com o lema “Always Be Prepared”.
marvelDc_combate <- marvelDc %>% # Cria um novo dataframe chamado marvelDc_combate.
group_by(Name, Publisher) %>% # Agrupa os dados por nome (Name) e editora (Publisher).
distinct(Combat) %>% # Mantém apenas os valores únicos da variável de combate (Combat) para cada combinação de nome e editora. Isso garante que cada personagem apareça apenas uma vez no resultado.
select(Name, Combat) %>% # Seleciona apenas as colunas de nome e combate.
arrange(-Combat) # Ordena os dados em ordem decrescente de comabte. Isso faz com que os personagens melhores em combate fiquem no topo.## Adding missing grouping variables: `Publisher`
ggplot(marvelDc_combate[1:30, ], aes(x = reorder(Name, Combat), y = Combat)) + # Cria o objeto básico do gráfico usando o dataframe marvelDc_combate contendo os 30 personagens melhores em combate. O eixo x representa o nome dos personagens, com a ordem determinada pelo combate, e o eixo y representa a escala de combate.
geom_bar(stat = "identity", aes(fill = Publisher)) + # Adiciona as barras ao gráfico, onde a altura das barras é determinada pelos valores de velocidade. A cor de preenchimento das barras é definida com base na editora (Publisher).
ylim(0, 105) + # Delimita o o intervalo trabalhado do eixo y.
labs(x = NULL, y = "Nível de combate", title = "Top 30 dos melhores personagens em combate", fill = "Editora") + # Retira o rótulo do eixo x, modifica o rótulo do eixo y, adiciona um título e modifica o nome da legenda.
coord_flip() + # Inverte o eixo x com o eixo y.
theme_bw() + # Define o tema do gráfico como um fundo branco.
scale_fill_manual(values = c("#1F83C2", "#D93030")) + # Define as cores manualmente para as editoras.
theme(plot.title = element_text(hjust = 0.5, size = 18, face = "bold"), # Realiza modifições no título.
legend.position = "top", # Modifica a posição da legenda para o topo.
axis.text = element_text(size = 7.5)) # Modidica o tamanho dos textos dos dados dos eixos.Raças mais recorrentes
Nesse gráfico fizemos as Top 15 raças mais recorrentes dos personagens por editora, para a DC foi escolhido uma paleta de cores frias e para a Marvel foi escolhido uma paleta de cores quentes. Percebemos que em ambas as editoras, a raça principal é a humana, além disso na Marvel existem muitos personagens mutantes, parte deles derivados dos X-Men, e na DC a segunda raça mais recorrente são os Kryptoniamos, que possuem parentesco com o Superman.
paleta_cores_dc <- c("#5B2D90", "#491D74", "#340556", "#20409A", "#0A195C", "#0065B5", "#00508F", "#02376B", "#02B9BD", "#01A9AC", "#02888B", "#01A55E", "#006535", "#73BF43", "#3C7025") # Define uma paleta de cores para os tipos de raças da DC Comics.
DCRaca <- marvelDc %>% # Cria um novo dataframe chamado DCRaca.
filter(!is.na(Race)) %>% # Os dados são filtrados para remover os registros em que o campo Race é NA (não disponível).
filter(Publisher == "DC Comics") %>% # Os dados são filtrados novamente para selecionar apenas os personagens da DC Comics, com base na coluna Publisher que deve ser igual a "DC Comics".
group_by(Race) %>% # Os dados são agrupados pela raça (Race).
dplyr::count(Race) %>% # A função count do pacote dplyr é aplicada para contar a ocorrência de cada raça.
select(Race, Contagem = n) %>% # A coluna n resultante da contagem é renomeada para Contagem utilizando a função select para melhorar a legibilidade.
arrange(-Contagem) # Os dados são ordenados em ordem decrescente de contagem usando a função arrange.
DCRaca <- ggplot(DCRaca[1:15, ], aes(x = reorder(Race, Contagem), y = Contagem)) + # Cria o objeto básico do gráfico usando o dataframe DCRaca contendo as 15 raças mais recorrentes da DC Comics. O eixo x representa o nome dos personagens, com a ordem determinada pela contagem, e o eixo y representa a escala de reccorência.
geom_bar(stat = "identity", aes(fill = Race)) + # Adiciona as barras ao gráfico, onde a altura das barras é determinada pela porcentagem da raça. A cor de preenchimento das barras é definida com base na editora (Publisher).
labs(x = NULL, y = "Quantidade de personagens", title = "Raças dos personagens da DC", subtitle= "Top 15 raças") + # Retira o rótulo do eixo x, modifica o rótulo do eixo y, adiciona título e subtítulo ao gráfico.
geom_label(stat = "identity", aes(label = Contagem), size = 7) + # Adiciona rótulos nas barras, mostrando a contagem de personagens correspondentes.
coord_flip() + # Inverte o eixo x com o eixo y.
guides(fill = FALSE, alpha = FALSE) + # As legendas de preenchimento e transparência são desativadas.
theme_bw() + # Define o tema do gráfico como um fundo branco.
theme(plot.title = element_text(hjust = 0.5, size = 45, face = "bold"), # Realiza modifições no título.
plot.subtitle = element_text(size = 35), # Realiza modifições no subtítulo.
axis.title = element_text(hjust = 0.5, size = 35, face = "bold"), # Realiza modificações nos eixos.
axis.text.y = element_text(angle = 0, size = 35, face = "bold"), # Realica modificações em cada raça.
axis.text.x = element_text(angle = 0, hjust = 0.5, size = 35, face = "bold")) + # Realiza modificações nos valores do eixo x.
scale_fill_manual(values = paleta_cores_dc) # Define as cores manualmente para as raças.
paleta_cores_marvel <- c("#A2238E", "#840E72", "#610052", "#F6821F", "#BA131A", "#8B0305", "#EF403D", "#8B1E1B", "#ED1B24", "#C16617", "#F9A61A", "#C28312", "#FEF200", "#CDBE01", "#968D02") # Define uma paleta de cores para os tipos de poderes da Marvel Comics.
marvelRaca <- marvelDc %>% # Cria um novo dataframe chamado marvelRaca.
filter(!is.na(Race)) %>% # Os dados são filtrados para remover os registros em que o campo Race é NA (não disponível).
filter(Publisher == "Marvel Comics") %>% # Os dados são filtrados novamente para selecionar apenas os personagens da Marvel Comics, com base na coluna Publisher que deve ser igual a "Marvel Comics".
group_by(Race) %>% # Os dados são agrupados pela raça (Race).
dplyr::count(Race) %>% # A função count do pacote dplyr é aplicada para contar a ocorrência de cada raça.
select(Race, Contagem = n) %>% # A coluna n resultante da contagem é renomeada para Contagem utilizando a função select para melhorar a legibilidade.
arrange(-Contagem) # Os dados são ordenados em ordem decrescente de contagem usando a função arrange.
marvelRaca <- ggplot(marvelRaca[1:15, ], aes(x = reorder(Race, Contagem), y = Contagem)) + # Cria o objeto básico do gráfico usando o dataframe marvelRaca contendo as 15 raças mais recorrentes da Marvel Comics. O eixo x representa o nome dos personagens, com a ordem determinada pela contagem, e o eixo y representa a escala de recorrência.
geom_bar(stat = "identity", aes(fill = Race)) + # Adiciona as barras ao gráfico, onde a altura das barras é determinada pela porcentagem da raça. A cor de preenchimento das barras é definida com base na editora (Publisher).
geom_label(stat = "identity", aes(label = Contagem), size = 7) + # Adiciona rótulos nas barras, mostrando a contagem de personagens correspondentes.
labs(x = NULL, y = "Quantidade de personagens", title = "Raças dos personagens da Marvel", subtitle= "Top 15 raças") + # Retira o rótulo do eixo x, modifica o rótulo do eixo y, adiciona título e subtítulo ao gráfico.
coord_flip() + # Inverte o eixo x com o eixo y.
guides(fill = FALSE, alpha = FALSE) + # As legendas de preenchimento e transparência são desativadas.
theme_bw() + # Define o tema do gráfico como um fundo branco.
theme(plot.title = element_text(hjust = 0.5, size = 45, face = "bold"), # Realiza modifições no título.
plot.subtitle = element_text(size = 35), # Realiza modifições no subtítulo.
axis.title = element_text(hjust = 0.5, size = 35, face = "bold"), # Realiza modificações nos eixos.
axis.text.y = element_text(angle = 0, size = 35, face = "bold"), # Realica modificações em cada raça.
axis.text.x = element_text(angle = 0, hjust = 0.5, size = 35, face = "bold")) + # Realiza modificações nos valores do eixo x.
scale_fill_manual(values = paleta_cores_marvel) # Define as cores manualmente para as raças.
grid.arrange(DCRaca, marvelRaca, ncol = 2) # Exibe os dois gráficos lado a lado.Tipos de poderes dos personagens
Nessa análise, fizemos os top 15 tipos de poderes que aparecem em cada editora, em que novamente separamos uma paleta de cores frias para a DC e uma paleta de cores quentes para a Marvel, desta forma conseguimos obter as maiores tendências de habilidades presentes nos personagens. Nela, observamos que em ambas as editoras, o poder mais recorrente é a super força, sendo que a stamina (capacidade de energia) e a super velocidade também se destacam.
paleta_cores_dc <- c("#5B2D90", "#491D74", "#340556", "#20409A", "#0A195C", "#0065B5", "#00508F", "#02376B", "#02B9BD", "#01A9AC", "#02888B", "#01A55E", "#006535", "#73BF43", "#3C7025") # Define uma paleta de cores para os tipos de poderes da DC Comics.
DCSuperPower <- marvelDc %>% # Cria um novo dataframe chamado DCSuperPower.
filter(!is.na(SuperPower)) %>% # Os dados são filtrados para remover os registros em que o campo Race é NA (não disponível).
filter(Publisher == "DC Comics") %>% # Os dados são filtrados para incluir apenas os personagens da DC Comics que possuem informações sobre seus poderes.
group_by(SuperPower) %>% # Os dados são agrupados pelo Super Poder (SuperPower).
dplyr::count(SuperPower) %>% # A função count do pacote dplyr é aplicada para contar a ocorrência de cada Super Poder.
select(SuperPower, Contagem = n) %>% # A coluna n resultante da contagem é renomeada para Contagem utilizando a função select para melhorar a legibilidade.
arrange(-Contagem) # Os dados são ordenados em ordem decrescente de contagem usando a função arrange.
total_dc <- sum(DCSuperPower$Contagem) # O total de personagens da DC Comics é calculado somando as contagens de cada tipo de poder.
DCSuperPower <- DCSuperPower %>%
mutate(Porcentagem = Contagem / total_dc * 100) # É adicionada uma nova coluna chamada "Porcentagem" aos dados, que representa a porcentagem de cada tipo de poder em relação ao total de personagens da DC Comics.
DCSuperPower <- ggplot(DCSuperPower[1:15, ], aes(x = reorder(SuperPower, Contagem), y = Contagem)) + # É criado um objeto ggplot utilizando os dados filtrados e apenas os 15 primeiros tipos de poder. O eixo x é configurado com reorder(SuperPower, Contagem) para ordenar as barras de acordo com a contagem de cada tipo de poder.
geom_bar(stat = "identity", aes(fill = SuperPower)) + # Adiciona as barras ao gráfico, com a altura das barras representando a contagem de cada tipo de poder. A cor de preenchimento das barras é definida pela coluna "SuperPower".
geom_label(stat = "identity", aes(label = paste0(Contagem, " (", round(Porcentagem, 1), "%)")), size = 7) + # Adiciona rótulos aos topos das barras, exibindo a contagem e a porcentagem de cada tipo de poder. Os rótulos são criados a partir das colunas "Contagem" e "Porcentagem"
labs(x = NULL, y = "Quantidade de personagens", title = "Poderes da DC", subtitle= "Top 15 tipos de poderes") + # Retira o rótulo do eixo x, modifica o rótulo do eixo y, adiciona título e subtítulo ao gráfico.
coord_flip() + # Inverte o eixo x com o eixo y.
guides(fill = FALSE, alpha = FALSE) + # As legendas de preenchimento e transparência são desativadas.
theme_bw() + # Define o tema do gráfico como um fundo branco.
theme(plot.title = element_text(hjust = 0.5, size = 45, face = "bold"), # Realiza modifições no título.
plot.subtitle = element_text(size = 35), # Realiza modifições no subtítulo.
axis.title = element_text(hjust = 0.5, size = 35, face = "bold"), # Realiza modificações nos eixos.
axis.text.y = element_text(angle = 0, size = 30, face = "bold"), # Realica modificações em cada Super Poder.
axis.text.x = element_text(angle = 0, hjust = 0.5, size = 35, face = "bold")) + # Realiza modificações nos valores do eixo x.
scale_fill_manual(values = paleta_cores_dc) # Define as cores manualmente para os Super Poderes.
paleta_cores_marvel <- c("#A2238E", "#840E72", "#610052", "#F6821F", "#BA131A", "#8B0305", "#EF403D", "#8B1E1B", "#ED1B24", "#C16617", "#F9A61A", "#C28312", "#FEF200", "#CDBE01", "#968D02") # Define uma paleta de cores para os tipos de poderes da Marvel Comics.
marvelSuperPower <- marvelDc %>% # Cria um novo dataframe chamado marvelSuperPower.
filter(!is.na(SuperPower)) %>% # Os dados são filtrados para remover os registros em que o campo Race é NA (não disponível).
filter(Publisher == "Marvel Comics") %>% # Os dados são filtrados para incluir apenas os personagens da Marvel Comics que possuem informações sobre seus poderes.
group_by(SuperPower) %>% # Os dados são agrupados pelo Super Poder (SuperPower).
dplyr::count(SuperPower) %>% # A função count do pacote dplyr é aplicada para contar a ocorrência de cada Super Poder.
select(SuperPower, Contagem = n) %>% # A coluna n resultante da contagem é renomeada para Contagem utilizando a função select para melhorar a legibilidade.
arrange(-Contagem) # Os dados são ordenados em ordem decrescente de contagem usando a função arrange.
total_marvel <- sum(marvelSuperPower$Contagem) # O total de personagens da Marvel Comics é calculado somando as contagens de cada tipo de poder.
marvelSuperPower <- marvelSuperPower %>%
mutate(Porcentagem = Contagem / total_marvel * 100) # É adicionada uma nova coluna chamada "Porcentagem" aos dados, que representa a porcentagem de cada tipo de poder em relação ao total de personagens da Marvel Comics.
marvelSuperPower <- ggplot(marvelSuperPower[1:15, ], aes(x = reorder(SuperPower, Contagem), y = Contagem)) + # É criado um objeto ggplot utilizando os dados filtrados e apenas os 15 primeiros tipos de poder. O eixo x é configurado com reorder(SuperPower, Contagem) para ordenar as barras de acordo com a contagem de cada tipo de poder.
geom_bar(stat = "identity", aes(fill = SuperPower)) + # Adiciona as barras ao gráfico, com a altura das barras representando a contagem de cada tipo de poder. A cor de preenchimento das barras é definida pela coluna "SuperPower".
geom_label(stat = "identity", aes(label = paste0(Contagem, " (", round(Porcentagem, 1), "%)")), size = 7) + # Adiciona rótulos aos topos das barras, exibindo a contagem e a porcentagem de cada tipo de poder. Os rótulos são criados a partir das colunas "Contagem" e "Porcentagem"
labs(x = NULL, y = "Quantidade de personagens", title = "Poderes da Marvel", subtitle= "Top 15 tipos de poderes") + # Retira o rótulo do eixo x, modifica o rótulo do eixo y, adiciona título e subtítulo ao gráfico.
coord_flip() + # Inverte o eixo x com o eixo y.
guides(fill = FALSE, alpha = FALSE) + # As legendas de preenchimento e transparência são desativadas.
theme_bw() + # Define o tema do gráfico como um fundo branco.
theme(plot.title = element_text(hjust = 0.5, size = 45, face = "bold"), # Realiza modifições no título.
plot.subtitle = element_text(size = 35), # Realiza modifições no subtítulo.
axis.title = element_text(hjust = 0.5, size = 35, face = "bold"), # Realiza modificações nos eixos.
axis.text.y = element_text(angle = 0, size = 30, face = "bold"), # Realica modificações em cada Super Poder.
axis.text.x = element_text(angle = 0, hjust = 0.5, size = 35, face = "bold")) + # Realiza modificações nos valores do eixo x.
scale_fill_manual(values = paleta_cores_marvel) # Define as cores manualmente para os Super Poderes.
grid.arrange(DCSuperPower, marvelSuperPower, ncol = 2) # Exibe os dois gráficos lado a lado.Medidas de Resumo
Para calcular as medidas de resumo de cada editora, foi necessário separar a tabela marvelDc em duas novas tabelas, uma tabela que contém apenas os dados da DC chamada tabela_dc e uma tabela que contém apenas os dados da Marvel chamada tabela_marvel.
tabela_dc <- marvelDc[marvelDc$Publisher == "DC Comics", ]
tabela_marvel <- marvelDc[marvelDc$Publisher == "Marvel Comics", ]Média
Para calcular a média das variáveis quantitativas de cada editora foi
utilizado a função mean(), em que nela foi
atribuido a tabela específica de cada editora e a coluna específica de
cada variável.
media_inteligencia_dc <- mean(tabela_dc$Intelligence)
media_forca_dc <- mean(tabela_dc$Strength)
media_velocidade_dc <- mean(tabela_dc$Speed)
media_durabilidade_dc <- mean(tabela_dc$Durability)
media_poder_dc <- mean(tabela_dc$Power)
media_combate_dc <- mean(tabela_dc$Combat)Portanto, temos as seguintes médias para a DC:
Média de inteligência = 62.7099567
Média de força = 50.5995671
Média de velocidade = 46.1760462
Média de durabilidade = 64.6341991
Média de poder = 65.9502165
Média de combate = 57.3556999
media_inteligencia_marvel <- mean(tabela_marvel$Intelligence)
media_forca_marvel <- mean(tabela_marvel$Strength)
media_velocidade_marvel <- mean(tabela_marvel$Speed)
media_durabilidade_marvel <- mean(tabela_marvel$Durability)
media_poder_marvel <- mean(tabela_marvel$Power)
media_combate_marvel <- mean(tabela_marvel$Combat)Portanto, temos as seguintes médias para a Marvel:
Média de inteligência = 60.6602891
Média de força = 47.1296769
Média de velocidade = 39.2767857
Média de durabilidade = 63.2767857
Média de poder = 59.0008503
Média de combate = 58.6373299
Mediana
Para calcular a mediana das variáveis quantitativas de cada editora
foi utilizado a função median(), em que
nela foi atribuido a tabela específica de cada editora e a coluna
específica de cada variável.
mediana_inteligencia_dc <- median(tabela_dc$Intelligence)
mediana_forca_dc <- median(tabela_dc$Strength)
mediana_velocidade_dc <- median(tabela_dc$Speed)
mediana_durabilidade_dc <- median(tabela_dc$Durability)
mediana_poder_dc <- median(tabela_dc$Power)
mediana_combate_dc <- median(tabela_dc$Combat)Contudo, temos as seguintes medianas para a DC:
Mediana de inteligência = 75
Mediana de força = 48
Mediana de velocidade = 38
Mediana de durabilidade = 80
Mediana de poder = 72
Mediana de combate = 60
mediana_inteligencia_marvel <- median(tabela_marvel$Intelligence)
mediana_forca_marvel <- median(tabela_marvel$Strength)
mediana_velocidade_marvel <- median(tabela_marvel$Speed)
mediana_durabilidade_marvel <- median(tabela_marvel$Durability)
mediana_poder_marvel <- median(tabela_marvel$Power)
mediana_combate_marvel <- median(tabela_marvel$Combat)Contudo, temos as seguintes medianas para a Marvel:
Mediana de inteligência = 63
Mediana de força = 48
Mediana de velocidade = 35
Mediana de durabilidade = 70
Mediana de poder = 62
Mediana de combate = 64
Quartis
Para calcular os quartis das variáveis quantitativas de cada editora
foi utilizado a função quantile(), em que
nela foi atribuido a tabela específica de cada editora e a coluna
específica de cada variável. Além disso, foi especificado pelo parâmetro
probs = c() os tipos de quartis
necessários, no caso o quartil 1, quartil
2 e o quartil 3.
quartis_inteligencia_dc <- quantile(tabela_dc$Intelligence, probs = c(0.25, 0.5, 0.75))
quartis_forca_dc <- quantile(tabela_dc$Strength, probs = c(0.25, 0.5, 0.75))
quartis_velocidade_dc <- quantile(tabela_dc$Speed, probs = c(0.25, 0.5, 0.75))
quartis_durabilidade_dc <- quantile(tabela_dc$Durability, probs = c(0.25, 0.5, 0.75))
quartis_poder_dc <- quantile(tabela_dc$Power, probs = c(0.25, 0.5, 0.75))
quartis_combate_dc <- quantile(tabela_dc$Combat, probs = c(0.25, 0.5, 0.75))Assim, temos os seguintes quartis para a DC:
Quartis(1,2,3) de inteligência = 50, 75, 88
Quartis(1,2,3) de força = 10, 48, 93
Quartis(1,2,3) de velocidade = 23, 38, 67
Quartis(1,2,3) de durabilidade = 28, 80, 100
Quartis(1,2,3) de poder = 37, 72, 100
Quartis(1,2,3) de combate = 40, 60, 85
quartis_inteligencia_marvel <- quantile(tabela_marvel$Intelligence, probs = c(0.25, 0.5, 0.75))
quartis_forca_marvel <- quantile(tabela_marvel$Strength, probs = c(0.25, 0.5, 0.75))
quartis_velocidade_marvel <- quantile(tabela_marvel$Speed, probs = c(0.25, 0.5, 0.75))
quartis_durabilidade_marvel <- quantile(tabela_marvel$Durability, probs = c(0.25, 0.5, 0.75))
quartis_poder_marvel <- quantile(tabela_marvel$Power, probs = c(0.25, 0.5, 0.75))
quartis_combate_marvel <- quantile(tabela_marvel$Combat, probs = c(0.25, 0.5, 0.75))Assim, temos os seguintes quartis para a Marvel:
Quartis(1,2,3) de inteligência = 50, 63, 88
Quartis(1,2,3) de força = 12, 48, 80
Quartis(1,2,3) de velocidade = 23, 35, 58
Quartis(1,2,3) de durabilidade = 40, 70, 95
Quartis(1,2,3) de poder = 33, 62, 93
Quartis(1,2,3) de combate = 42, 64, 80
Desvio Padrão
Para calcular o desvio padrão das variáveis quantitativas de cada
editora foi utilizado a função sd(), em
que nela foi atribuido a tabela específica de cada editora e a coluna
específica de cada variável.
desviopad_inteligencia_dc <- sd(tabela_dc$Intelligence)
desviopad_forca_dc <- sd(tabela_dc$Strength)
desviopad_velocidade_dc <- sd(tabela_dc$Speed)
desviopad_durabilidade_dc <- sd(tabela_dc$Durability)
desviopad_poder_dc <- sd(tabela_dc$Power)
desviopad_combate_dc <- sd(tabela_dc$Combat)Portanto, temos os seguintes desvios padrões para a DC:
Desvio Padrão de inteligência = 30.9474855
Desvio Padrão de força = 38.923314
Desvio Padrão de velocidade = 32.7134926
Desvio Padrão de durabilidade = 36.7366621
Desvio Padrão de poder = 34.5740409
Desvio Padrão de combate = 30.3085652
desviopad_inteligencia_marvel <- sd(tabela_marvel$Intelligence)
desviopad_forca_marvel <- sd(tabela_marvel$Strength)
desviopad_velocidade_marvel <- sd(tabela_marvel$Speed)
desviopad_durabilidade_marvel <- sd(tabela_marvel$Durability)
desviopad_poder_marvel <- sd(tabela_marvel$Power)
desviopad_combate_marvel <- sd(tabela_marvel$Combat)Portanto, temos os seguintes desvios padrões para a Marvel:
Desvio Padrão de inteligência = 28.0998067
Desvio Padrão de força = 34.139401
Desvio Padrão de velocidade = 24.5932181
Desvio Padrão de durabilidade = 33.8837355
Desvio Padrão de poder = 33.1095265
Desvio Padrão de combate = 27.7330628
Variância
Para calcular a variância das variáveis quantitativas de cada editora foi mais fácil, já que podemos encontrar seu valor após elevar o valor do desvio padrão ao quadrado.
variancia_inteligencia_dc <- desviopad_inteligencia_dc ** 2
variancia_forca_dc <- desviopad_forca_dc ** 2
variancia_velocidade_dc <- desviopad_velocidade_dc ** 2
variancia_durabilidade_dc <- desviopad_durabilidade_dc ** 2
variancia_poder_dc <- desviopad_poder_dc ** 2
variancia_combate_dc <- desviopad_combate_dc ** 2Assim temos as seguintes variâncias para a DC:
Variância de inteligência = 957.7468611
Variância de força = 1515.0243753
Variância de velocidade = 1070.1725955
Variância de durabilidade = 1349.5823386
Variância de poder = 1195.3643068
Variância de combate = 918.6091263
variancia_inteligencia_marvel <- desviopad_inteligencia_marvel ** 2
variancia_forca_marvel <- desviopad_forca_marvel ** 2
variancia_velocidade_marvel <- desviopad_velocidade_marvel ** 2
variancia_durabilidade_marvel <- desviopad_durabilidade_marvel ** 2
variancia_poder_marvel <- desviopad_poder_marvel ** 2
variancia_combate_marvel <- desviopad_combate_marvel ** 2Assim, temos as seguintes variâncias para a Marvel:
Variância de inteligência = 789.599137
Variância de força = 1165.4987021
Variância de velocidade = 604.8263771
Variância de durabilidade = 1148.107534
Variância de poder = 1096.2407479
Variância de combate = 769.1227743
Desvio Médio
Para calcular o desvio médio das variáveis quantitativas de cada
editora foi utilizado a função mad(), em
que nela foi atribuido a tabela específica de cada editora e a coluna
específica de cada variável.
desviomed_inteligencia_dc <- mad(tabela_dc$Intelligence)
desviomed_forca_dc <- mad(tabela_dc$Strength)
desviomed_velocidade_dc <- mad(tabela_dc$Speed)
desviomed_durabilidade_dc <- mad(tabela_dc$Durability)
desviomed_poder_dc <- mad(tabela_dc$Power)
desviomed_combate_dc <- mad(tabela_dc$Combat)Contudo, temos os seguintes desvios médios para a DC:
Desvio Médio de inteligência = 28.1694
Desvio Médio de força = 56.3388
Desvio Médio de velocidade = 29.652
Desvio Médio de durabilidade = 29.652
Desvio Médio de poder = 41.5128
Desvio Médio de combate = 37.065
desviomed_inteligencia_marvel <- mad(tabela_marvel$Intelligence)
desviomed_forca_marvel <- mad(tabela_marvel$Strength)
desviomed_velocidade_marvel <- mad(tabela_marvel$Speed)
desviomed_durabilidade_marvel <- mad(tabela_marvel$Durability)
desviomed_poder_marvel <- mad(tabela_marvel$Power)
desviomed_combate_marvel <- mad(tabela_marvel$Combat)Contudo, temos os seguintes desvios médios para a Marvel:
Desvio Médio de inteligência = 19.2738
Desvio Médio de força = 51.891
Desvio Médio de velocidade = 17.7912
Desvio Médio de durabilidade = 41.5128
Desvio Médio de poder = 44.478
Desvio Médio de combate = 23.7216
Moda
Para calcular a moda das variáveis categóricas de cada editora, foram
necessárias três funções. A função table()
foi utilizada para contar a frequência de cada ocorrência nas colunas, a
função which.max() foi usada para pegar a
maior frequência, enquanto a função
names() teve o papel de retornar apenas o
nome dessa frequência específica.
frequencia_SuperPower_dc <- table(tabela_dc$SuperPower)
moda_SuperPower_dc <- names(frequencia_SuperPower_dc)[which.max(frequencia_SuperPower_dc)]
frequencia_Gender_dc <- table(tabela_dc$Gender)
moda_Gender_dc <- names(frequencia_Gender_dc)[which.max(frequencia_Gender_dc)]
frequencia_Race_dc <- table(tabela_dc$Race)
moda_Race_dc <- names(frequencia_Race_dc)[which.max(frequencia_Race_dc)]
frequencia_Alignment_dc <- table(tabela_dc$Alignment)
moda_Alignment_dc <- names(frequencia_Alignment_dc)[which.max(frequencia_Alignment_dc)]Logo, temos as seguintes modas para a DC:
Moda de super poder = Super.Strength
Moda de gênero = Male
Moda de raça = Human
Moda de alinhamento = good
frequencia_SuperPower_marvel <- table(tabela_marvel$SuperPower)
moda_SuperPower_marvel <- names(frequencia_SuperPower_marvel)[which.max(frequencia_SuperPower_marvel)]
frequencia_Gender_marvel <- table(tabela_marvel$Gender)
moda_Gender_marvel <- names(frequencia_Gender_marvel)[which.max(frequencia_Gender_marvel)]
frequencia_Race_marvel <- table(tabela_marvel$Race)
moda_Race_marvel <- names(frequencia_Race_marvel)[which.max(frequencia_Race_marvel)]
frequencia_Alignment_marvel <- table(tabela_marvel$Alignment)
moda_Alignment_marvel <- names(frequencia_Alignment_marvel)[which.max(frequencia_Alignment_marvel)]Logo, temos as seguintes modas para a Marvel:
Moda de super poder = Super.Strength
Moda de gênero = Male
Moda de raça = Human
Moda de alinhamento = good
Por fim, podemos analisar a moda de editoras da nossa base de dados:
Para fazer essa análise, basta calcular a frequência de cada editora
na coluna Publisher através da função
table(), depois verificar qual das
ocorrências tiveram a maior frequência com a função
which.max() e por fim utilizar a função
names() para retornar apenas o nome da
editora com a maior quantidade de ocorrências.
frequencia_Publisher <- table(marvelDc$Publisher)
moda_Publisher <- names(frequencia_Publisher)[which.max(frequencia_Publisher)]Moda de editora = Marvel Comics
PARTE C
Qualidade expressiva da peça de comunicação
A peça busca remeter a ideia de estar presente em um quadrinho, ao mesmo tempo que busca mostrar uma dualidade entre os dois universos tratados. Assim, a peça possui fundamento nos estilos das HQ’s.
Público-alvo
O trabalho se trata do universo das Histórias em Quadrinhos. Dessa forma, tem como objetivo instigar o grupo de cultura geek, em sua maioria, que possui interesse sobre a discussão DC vs Marvel.
Rascunho da Peça
Para a criação da ideia inicial, foi feito um breve rascunho da peça, nele está contido a esquematização do trabalho. A invenção da peça gráfica busca ser o mais fiel possível de Historías em Quadrinhos de heróis. Além disso, foi utilizado um PDF de um HQ antigo do Hulk para servir de inspiração e obtenção das paletas de cores.
Rascunho da Peça Gráfica
HQ de inspiração
Definição das ferramentas
Para a confecção da Peça Gráfica, foram utilizadas as seguintes ferramentas:
Adobe Color: Para captação de paletas de cores harmonicas;
HQ’s Antigos: Para simular e inspirar a criação da peça gráfica, além de orientar na tomada de decisão das paletas de cores;
RStudio: Para a criação dos gráficos base da peça, com o objetivo de comparar as duas editoras;
Imagens da Internet: Utilizadas para a decoração da peça gráfica;
Canva: Ferramenta mais utilizada no projeto, serviu para a criação de todo o Design da peça gráfica, utilizando de conceitos básicos de sistema de camadas de figuras e junção de todos os elementos artísticos e comparativos presentas no trabalho.
PARTE D
Batalhas Mortais
Para construir os gráficos que comparam os atributos de cada um dos
personagens, foi necessário criar um data frame chamado
dados que contém as informações dos atributos de ambos
os competidores. Em seguida, foram calculadas as porcentagens de cada
atributo em relação à soma total desse atributo, ou seja,
dados$inteligencia_percent recebe a
porcentagem de inteligência dividida pela soma total de inteligência em
dados, multiplicada por 100, desta forma podemos medir a proporção entre
as habilidades de cada personagem e assim diferenciá-los. Depois, para
cada atributo foram criados gráficos separados usando a função
geom_bar(), onde cada gráfico foi
representado pela porcentagem do atributo do persoagem em relação a sua
editora. Dessa mesma forma, foram feitos os outros gráficos de
atributos, sendo que em cada um dos gráficos foi escolhido a cor
azul para representar a DC Comics e a
cor vermelha para representar a Marvel
Comics. Por fim, foi utilizado a função
grid.arrange() para juntar todos os
gráficos e assim poder realizar a comparação entre os guerreiros.
Além disso, cada barra do gráfico está comparando um atributo diferente dos personagens, elas foram ordenadas do limite superior ao limite inferior da seguinte forma: Inteligência; Força; Velocidade; Durabilidade; Poder; Combate. OBS: Na Peça Gráfica foram colocadas legendas através do Canva, para diferenciar as comparações.
Batman X Homem de Ferro
dados <- data.frame(editora = c("Marvel", "DC"),
inteligencia = c(100, 100),
forca = c(18, 85),
velocidade = c(27, 58),
durabilidade = c(42, 85),
poder = c(37, 100),
combate = c(100, 64))
dados$inteligencia_percent <- (dados$inteligencia / sum(dados$inteligencia)) * 100
int <- ggplot(data = dados, mapping = aes(x = 1, y = inteligencia_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$forca_percent <- (dados$forca / sum(dados$forca)) * 100
forc <- ggplot(data = dados, mapping = aes(x = 1, y = forca_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$velocidade_percent <- (dados$velocidade / sum(dados$velocidade)) * 100
vel <- ggplot(data = dados, mapping = aes(x = 1, y = velocidade_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$durabilidade_percent <- (dados$durabilidade / sum(dados$durabilidade)) * 100
dur <- ggplot(data = dados, mapping = aes(x = 1, y = durabilidade_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$poder_percent <- (dados$poder / sum(dados$poder)) * 100
pod <- ggplot(data = dados, mapping = aes(x = 1, y = poder_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$combate_percent <- (dados$combate / sum(dados$combate)) * 100
comb <- ggplot(data = dados, mapping = aes(x = 1, y = combate_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
grid.arrange(int, forc, vel, dur, pod, comb, ncol = 1)Darkseid X Thanos
dados <- data.frame(editora = c("Marvel", "DC"),
inteligencia = c(88, 88),
forca = c(100, 100),
velocidade = c(23, 17),
durabilidade = c(100, 100),
poder = c(100, 100),
combate = c(95, 80))
dados$inteligencia_percent <- (dados$inteligencia / sum(dados$inteligencia)) * 100
int <- ggplot(data = dados, mapping = aes(x = 1, y = inteligencia_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$forca_percent <- (dados$forca / sum(dados$forca)) * 100
forc <- ggplot(data = dados, mapping = aes(x = 1, y = forca_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$velocidade_percent <- (dados$velocidade / sum(dados$velocidade)) * 100
vel <- ggplot(data = dados, mapping = aes(x = 1, y = velocidade_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$durabilidade_percent <- (dados$durabilidade / sum(dados$durabilidade)) * 100
dur <- ggplot(data = dados, mapping = aes(x = 1, y = durabilidade_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$poder_percent <- (dados$poder / sum(dados$poder)) * 100
pod <- ggplot(data = dados, mapping = aes(x = 1, y = poder_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$combate_percent <- (dados$combate / sum(dados$combate)) * 100
comb <- ggplot(data = dados, mapping = aes(x = 1, y = combate_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
grid.arrange(int, forc, vel, dur, pod, comb, ncol = 1)Superman X Hulk
dados <- data.frame(editora = c("Marvel", "DC"),
inteligencia = c(100, 88),
forca = c(100, 100),
velocidade = c(100, 47),
durabilidade = c(100, 100),
poder = c(94, 41),
combate = c(85, 85))
dados$inteligencia_percent <- (dados$inteligencia / sum(dados$inteligencia)) * 100
int <- ggplot(data = dados, mapping = aes(x = 1, y = inteligencia_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$forca_percent <- (dados$forca / sum(dados$forca)) * 100
forc <- ggplot(data = dados, mapping = aes(x = 1, y = forca_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$velocidade_percent <- (dados$velocidade / sum(dados$velocidade)) * 100
vel <- ggplot(data = dados, mapping = aes(x = 1, y = velocidade_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$durabilidade_percent <- (dados$durabilidade / sum(dados$durabilidade)) * 100
dur <- ggplot(data = dados, mapping = aes(x = 1, y = durabilidade_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$poder_percent <- (dados$poder / sum(dados$poder)) * 100
pod <- ggplot(data = dados, mapping = aes(x = 1, y = poder_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$combate_percent <- (dados$combate / sum(dados$combate)) * 100
comb <- ggplot(data = dados, mapping = aes(x = 1, y = combate_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
grid.arrange(int, forc, vel, dur, pod, comb, ncol = 1)Mulher-Maravilha X Feiticeira Escarlate
dados <- data.frame(editora = c("Marvel", "DC"),
inteligencia = c(88, 88),
forca = c(100, 10),
velocidade = c(50, 23),
durabilidade = c(100, 42),
poder = c(42, 67),
combate = c(100, 28))
dados$inteligencia_percent <- (dados$inteligencia / sum(dados$inteligencia)) * 100
int <- ggplot(data = dados, mapping = aes(x = 1, y = inteligencia_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$forca_percent <- (dados$forca / sum(dados$forca)) * 100
forc <- ggplot(data = dados, mapping = aes(x = 1, y = forca_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$velocidade_percent <- (dados$velocidade / sum(dados$velocidade)) * 100
vel <- ggplot(data = dados, mapping = aes(x = 1, y = velocidade_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$durabilidade_percent <- (dados$durabilidade / sum(dados$durabilidade)) * 100
dur <- ggplot(data = dados, mapping = aes(x = 1, y = durabilidade_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$poder_percent <- (dados$poder / sum(dados$poder)) * 100
pod <- ggplot(data = dados, mapping = aes(x = 1, y = poder_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$combate_percent <- (dados$combate / sum(dados$combate)) * 100
comb <- ggplot(data = dados, mapping = aes(x = 1, y = combate_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
grid.arrange(int, forc, vel, dur, pod, comb, ncol = 1)Arqueiro Verde X Gavião Arqueiro
dados <- data.frame(editora = c("Marvel", "DC"),
inteligencia = c(75, 50),
forca = c(12, 12),
velocidade = c(35, 23),
durabilidade = c(28, 14),
poder = c(26, 26),
combate = c(90, 80))
dados$inteligencia_percent <- (dados$inteligencia / sum(dados$inteligencia)) * 100
int <- ggplot(data = dados, mapping = aes(x = 1, y = inteligencia_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$forca_percent <- (dados$forca / sum(dados$forca)) * 100
forc <- ggplot(data = dados, mapping = aes(x = 1, y = forca_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$velocidade_percent <- (dados$velocidade / sum(dados$velocidade)) * 100
vel <- ggplot(data = dados, mapping = aes(x = 1, y = velocidade_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$durabilidade_percent <- (dados$durabilidade / sum(dados$durabilidade)) * 100
dur <- ggplot(data = dados, mapping = aes(x = 1, y = durabilidade_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$poder_percent <- (dados$poder / sum(dados$poder)) * 100
pod <- ggplot(data = dados, mapping = aes(x = 1, y = poder_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$combate_percent <- (dados$combate / sum(dados$combate)) * 100
comb <- ggplot(data = dados, mapping = aes(x = 1, y = combate_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
grid.arrange(int, forc, vel, dur, pod, comb, ncol = 1)Marvel X DC
Obs: Os dados foram obtidos à partir da média de cada atributo por editora.
dados <- data.frame(editora = c("Marvel", "DC"),
inteligencia = c(62.70, 60.66),
forca = c(50.59, 47.12),
velocidade = c(46.17, 39.27),
durabilidade = c(64.63, 63.27),
poder = c(65.95, 59),
combate = c(57.35, 58.63))
dados$inteligencia_percent <- (dados$inteligencia / sum(dados$inteligencia)) * 100
int <- ggplot(data = dados, mapping = aes(x = 1, y = inteligencia_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$forca_percent <- (dados$forca / sum(dados$forca)) * 100
forc <- ggplot(data = dados, mapping = aes(x = 1, y = forca_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$velocidade_percent <- (dados$velocidade / sum(dados$velocidade)) * 100
vel <- ggplot(data = dados, mapping = aes(x = 1, y = velocidade_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$durabilidade_percent <- (dados$durabilidade / sum(dados$durabilidade)) * 100
dur <- ggplot(data = dados, mapping = aes(x = 1, y = durabilidade_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$poder_percent <- (dados$poder / sum(dados$poder)) * 100
pod <- ggplot(data = dados, mapping = aes(x = 1, y = poder_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
dados$combate_percent <- (dados$combate / sum(dados$combate)) * 100
comb <- ggplot(data = dados, mapping = aes(x = 1, y = combate_percent, fill = editora)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
theme_void() +
guides(fill = "none") +
scale_fill_manual(values = c("#EC1D23", "#0378F2"))
grid.arrange(int, forc, vel, dur, pod, comb, ncol = 1)Resultado Final da Peça Gráfica
A peça gráfica realizada a partir dos gráficos acima está disponível
em:
https://github.com/KaikyBraga/DC-Comics-vs-Marvel/blob/main/BATALHA%20MORTAL.pdf